One or more arrangements described herein relate to computer information systems and, more particularly, to agile software development.
Agile software development is a group of software development methods. These methods are based on iterative and incremental development, where requirements and solutions evolve through collaboration between self-organizing, cross-functional teams. Agile software development promotes adaptive planning, evolutionary development and delivery, and encourages rapid and flexible response to change. In this regard, it is a conceptual framework that promotes interactions throughout the development cycle.
Scrum is an example of a software development framework that leverages agile software development to manage software projects, such as product or application development. Scrum implements methods of empirical process control for project management in situations where it is difficult to plan ahead. Scrum's approach to planning and managing projects is to bring decision-making authority to the level of operation properties and certainties. In lieu of traditional command-and-control management, Scrum uses feedback loops that constitute a core management technique.
Scrum is based on a team model, including personnel both for core roles and ancillary roles. The core roles typically include a product owner, a development team and a scrum master. The product owner represents the stakeholders and presents their input to the team. The development team is responsible for delivering potentially shippable product increments at the end of each sprint. The scrum master is accountable for removing impediments to the ability of the team to deliver the sprint goal/deliverables. A test and evaluation team also can be a core role if the development team does not perform test and evaluation. The ancillary roles typically include the stakeholders (e.g., customers, venders, etc.) and managers who control the work environment.
A “sprint” is the basic unit of development in Scrum. A sprint is a timeboxed effort. In other words, it is restricted to a specific duration. The duration usually is fixed in advance for each sprint. During each sprint, a team creates finished portions of a product. The set of features that go into a sprint are specified by a product backlog, which is an ordered list of requirements.